#ifndef __hyperterminal_H
#define __hyperterminal_H
#include "Pub_typedef.h"
#include "Pub_eventdef.h"
#include "Pub_processdef.h"
#include "R_transfer.h"
#include "R_sched.h"
#include "Bsp.h"
#include "Stub.h"

//zjg #include "board_drv.h"
//zjg #include "black_box.h"
#ifdef __FEMM
#include "FEMMMenu.h"
#else
#ifdef __SA
#include "SAMenu.h"
#else
#ifdef __SE
#include "SEMenu.h"
#else
#ifdef __TAM0
#include "TAM0Menu.h"
#else
#ifdef __NIP
#include "nipmenu.h"
#else
#ifdef __FCE
#include "fcemenu.h"
#else
#ifdef __CIPM2
#include "cipm2menu.h"
#else
#if defined __PM483 || defined __PM0
#include "PMMenu.h"
#else
#ifdef __PSA
#include "psamenu.h"
#else
#ifdef __MMC
  #ifdef __BBUB
  #include "bbub_mmcmenu.h"
  #else
  #include "MmcMenu.h"
  #endif
#else
#ifdef __USR
#include "usrmenu.h"
#endif
#endif
#endif
#endif
#endif
#endif
#endif
#endif
#endif
#endif
#endif

#ifndef MOSS_FREERTOS
#define TEST0_PRIO  5
#define TEST1_PRIO  6
#define TEST2_PRIO  7
#define TEST3_PRIO  8
#else
#define TEST0_PRIO  18
#define TEST1_PRIO  18
#define TEST2_PRIO  18
#define TEST3_PRIO  18
#endif


#define ENTER_HYPER_PRINT()  {gucPrintLevel = 1;}
#define EXIT_HYPER_PRINT()   {gucPrintLevel = 0;}

extern BYTE gucPrintLevel;
void Task_vHyperTerminal(void *pdata);
void Task_CheckRelaySignal(void *pdata);
BYTE ucWaitingForMenuInput(BYTE ucMin, BYTE ucMax);
BYTE ucWaitForHexDataInput(WORD32 *pucBuf, BYTE *pucInputNum, const char *pcDefString);
BYTE ucWaitForDataInput(WORD32 *pulBuf, BYTE *pucInputNum, const char *pcDefString);
BYTE ucPrintNum(WORD32 ulTemp, BYTE ucBits);
void vPrintTempNum(SCHAR cTemp);
void vPrintHexByte(T_UART *UARTx, BYTE ucHex);
extern void print_app(const char *fmt, ...);

extern VOID AppDisablePrintf();
extern VOID AppEnablePrintf();

#endif
